/**
 * 
 */
package com.shrmp.www;

/**
 * @author Johnny Tam
 * 总结： 
 * 1) class A 实现接口CallBack callback——背景1
 * 2) class A 中包含一个class B的引用b ——背景2
 * 3) class B 有一个参数为Callback的方法fun(CallBack callback, ....) ——背景3
 * 4) A的对象a调用B的方法 fun(CallBack callback, ...) ——A类调用B类的某个方法 fun
 * 5) 然后b就可以在fun(CallBack callback, ..)方法中调用A的方法 ——B类调用A类的某个方法D
 * 
 * A --> B --> A
 */
public class XiaoLi {
	/**    
     * @param callBack
     * @param question  小王问的问题 
     */  
    public void executeQuestion(CallBack callBack, String question){
        System.out.println("小王问的问题是--->" + question);
          
        //模拟小李办自己的事情需要很长时间
        System.out.println("小王在办理自己的事情了，模拟睡眠了3秒钟！");
        
        try {
			Thread.sleep(3000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
        
        System.out.println("小李把自己的事情办理完成了，开始思考小王的问题 1 + 1 = ？？，  Bing Go， 知道答案了。。。\n");
        
        /** 
         * 小李办完自己的事情之后想到了答案是2 
         */  
        String result = "答案是2";  
          
        /**
         * 于是就打电话告诉小王，调用小王中的方法
         */
        callBack.solve(result);
    }
  

}
